package send.email;

import config.model.MailConfig;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.io.IOException;
import java.util.List;
import java.util.Properties;

public class SendQQmail
{

    public static void send(MailConfig mc, String url, List<String> mailList) throws MessagingException, IOException
    {
        // 创建Properties 类用于记录邮箱的一些属性
        final Properties props = new Properties();
        // 表示SMTP发送邮件，必须进行身份验证
        props.put("mail.smtp.auth", "true");
        //此处填写SMTP服务器
        props.put("mail.smtp.host", mc.getHost());
        //端口号，QQ邮箱给出了两个端口，但是另一个我一直使用不了，所以就给出这一个587
        props.put("mail.smtp.port", mc.getPort());
        // 此处填写你的账号
        props.put("mail.user", mc.getCount());
        // 此处的密码就是前面说的16位STMP口令
        props.put("mail.password", mc.getKey());

        // 构建授权信息，用于进行SMTP进行身份验证
        Authenticator authenticator = new Authenticator() {
            protected PasswordAuthentication getPasswordAuthentication() {
                // 用户名、密码
                String userName = props.getProperty("mail.user");
                String password = props.getProperty("mail.password");
                return new PasswordAuthentication(userName, password);
            }
        };
        // 使用环境属性和授权信息，创建邮件会话
        Session mailSession = Session.getInstance(props, authenticator);
        // 创建邮件消息
        MimeMessage message = new MimeMessage(mailSession);
        // 设置发件人
        InternetAddress form = new InternetAddress(
        props.getProperty("mail.user"));
        message.setFrom(form);
        // 设置收件人的邮箱
       /* InternetAddress to = new InternetAddress("407050835@qq.com");
        message.setRecipient(Message.RecipientType.TO, to);*/
        for (String s : mailList) {
            message.addRecipient(Message.RecipientType.TO, new InternetAddress("407050835@qq.com"));
        }
        // 设置邮件标题
        message.setSubject("校友问卷推送");
        // 设置邮件的内容体
        message.setContent(url, "text/html;charset=UTF-8");

        Transport trans = mailSession.getTransport("smtp");
        trans.connect(props.getProperty("mail.smtp.host"),Integer.parseInt( props.getProperty("mail.smtp.port")), props.getProperty("mail.user"), props.getProperty("mail.password"));
        trans.sendMessage(message, message.getAllRecipients());
    }

}